package com.xsomnus.rpc.provider.service.impl;

import com.xsomnus.rpc.common.annotation.RPCService;
import com.xsomnus.rpc.common.entity.Address;
import com.xsomnus.rpc.common.entity.User;
import com.xsomnus.rpc.provider.service.IUserService;
import lombok.extern.slf4j.Slf4j;

import java.util.Collection;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/**
 * @author @xsomnus666_xiawenye★
 * @since 2019/4/22 0022 16:10
 * 当你发现自己的才华撑不起野心时，就请安静下来学习吧
 */
@Slf4j
@RPCService
public class UserServiceImpl implements IUserService {

    private Map<String, User> userMap = new ConcurrentHashMap<>();

    @Override
    public User getById(String id) {
        log.debug("根据用户的id查询用户的信息: {}", id);
        return userMap.get(id);
    }

    @Override
    public User insert(User user) {
        log.debug("新增用户的信息: {}", user);
        userMap.put(user.getId(), user);
        return user;
    }

    @Override
    public void deleteById(String id) {
        log.debug("删除用户: {}", id);
        userMap.remove(id);
    }

    @Override
    public String getNameById(String id) {
        log.debug("根据用户的id查询用户的姓名: {}", id);
        return userMap.get(id).getName();
    }

    @Override
    public Address getAddressById(String id) {
        log.debug("根据用户的id查询用户的地址: {}", id);
        return userMap.get(id).getAddress();
    }

    @Override
    public Map<String, User> mapAll() {
        log.debug("[Map]查询用户的信息: {}", userMap);
        return userMap;
    }

    @Override
    public Collection<User> listAll() {
        log.debug("[List]查询用户的信息: {}", userMap);
        return userMap.values();
    }

    @Override
    public boolean updateById(User user) {
        log.debug("根据用户的id更新用户的信息: {}", user.getId());
        userMap.put(user.getId(), user);
        return true;
    }
}
